package collections.list;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 证明排序算法那个性能最高
 * 1.冒泡排序
 * 2.快速排序
 * <p>
 * 步骤1：生成一个10万个数字的集合
 * 步骤2：冒泡排序的花费时间
 * 步骤3：快速排序花费的时间
 * 步骤4：对时间进行比较
 */
public class TestHighSpeedNumberOrderUtils {

    public static void main(String[] args) {

        List<Integer>  numberListd=generateNumber(10000);
        CcollectionUtils utils = new CcollectionUtils();
        System.out.println("开始快速排序：");//9458132  109807  17380 9856 10107 48530 15779 15376
        long startTime1 = System.nanoTime();
        List<Integer> bubbleSortNumber1= utils.quickOrderNumber(numberListd);
        System.out.println(bubbleSortNumber1);
        long endime1 = System.nanoTime();
        System.out.println("快速排序花费的时间："+(endime1-startTime1)/1000);
        //----------------
        List<Integer>  numberListd1=generateNumber(10000);
        System.out.println("开始冒泡排序：");//40558253  311629 16958  12739 12614  107554 18140 18138
        long startTime = System.nanoTime();
        List<Integer> bubbleSortNumber= utils.bubbleSortNumber(numberListd1);
        System.out.println(bubbleSortNumber);
        long endime = System.nanoTime();
        System.out.println("冒泡排序花费的时间："+(endime-startTime)/1000);


    }

    /**
     * 这个方法是生成一个随机数字的集合  ，传入多大的数字 size 就生成
     * 0~size 之间的随机数
     *
     * @param size
     * @return
     */
    public  static  List<Integer> generateNumber(int size) {
        ArrayList<Integer> numberarray = new ArrayList<>(size);
        Random  random=new Random();
        for (int i = 0; i < size; i++) {
            int number = random.nextInt(size);
            numberarray.add(number);
        }
        return numberarray;
    }

}
